Gradle with CircleCI
https://circleci.com/docs/2.0/language-java/
最低限指定通りに gradle task を実行するだけで問題ない。
wrapper によってビルドしている場合、毎回 distribution jar をダウンロードしてくるので gradle CDN から落とすよりも有利ならば下記のように設定すると早くなる場合がある。注意点としては使用される実行環境のユーザが異なる場合や別途 GRADLE_USER_HOME を設定してる場合などはファイル位置が異なるのでこのままでは反映できない。(TODO: GRADLE_USER_HOME も key の一部に利用する方法)
code:.circleci/config.yml
- save_cache:
paths:
- ~/.gradle/wrapper
key: v1-gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}
Dealing with ephemeral builds にあるように、*.lock ファイルや gc.properties はコピーしないように書かれているが ~/.gradle/caches 以下だとこれが含まれている。実際には同時に同じキャッシュを利用するケースがないため問題にならない場合が多い。これも同様に GRADLE_USER_HOME が変わる場合は動かなくなる。
code:.circleci/config.yml
- save_cache:
paths:
- ~/.gradle/caches
key: v1-gradle-cache-{{ checksum "build.gradle" }}
その他、 dependency cache を各コンテナで共有する方法もあるらしい。
なんらかの理由で kotlin が動かない時に試す方法
https://discuss.kotlinlang.org/t/solved-disable-kotlin-compiler-process-keepalive/2622
#Gradle_with_CI #CircleCI